import fs from 'node:fs'
import { BotApi } from './model/api/api.js';
//import Ver from './components/Version.js'
import chalk from 'chalk'//用粉笔写；用白垩粉擦
import { initializeFileLockSystem, getFileLockSystemStatus } from './components/FileLockInitializer.js'


const files = fs.readdirSync('./plugins/trss-akasha-terminal-plugin/apps').filter(file => file.endsWith('.js'))//以js结束的文件被读取
const apps = await BotApi.Index.toindex({ indexName: 'apps' });
let ret = []

if (Bot?.logger?.info) {
logger.info('🌱🌱🌱🌱🌱🌱🌱🌱')
logger.info(chalk.green('(🍀凑哈吉煤快vivo50🍀):"虚空插件trss版"初始化.....'))
logger.info(chalk.yellow('┎┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┒'))
logger.info(chalk.yellow('┃') + chalk.green(' ┅┅┅┅┳┅┅┅┅      ⋏    ┅┅┅┅┳┅┅┅┅  ┎┅┅┅┅┅┅┒ ') + chalk.yellow('┃'))
logger.info(chalk.yellow('┃') + chalk.green('     ┋         / \\       ┋      ┃      ┃ ') + chalk.yellow('┃'))
logger.info(chalk.yellow('┃') + chalk.green('     ┋        /───\\      ┋      ┠┅┅┅┅┅┅┚ ') + chalk.yellow('┃'))
logger.info(chalk.yellow('┃') + chalk.green('     ┋       /     \\     ┋      ┃        ') + chalk.yellow('┃'))
logger.info(chalk.yellow('┃') + chalk.green('     ┋      /       \\    ┋      ┃        ') + chalk.yellow('┃'))
logger.info(chalk.yellow('┖┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┚'))
logger.info(chalk.cyan('(🍀凑哈吉煤快vivo50🍀): 正在初始化文件锁系统...'))
try {
    const fileLockInitialized = await initializeFileLockSystem()
    if (fileLockInitialized) {
        logger.info(chalk.green('(🍀凑哈吉煤快vivo50🍀): 文件锁系统初始化成功 🔒'))
        const status = getFileLockSystemStatus()
        logger.info(chalk.cyan(`(🍀凑哈吉煤快vivo50🍀): 文件锁系统运行时间: ${status.uptime}ms`))
    } else {
        logger.warn(chalk.yellow('(🍀凑哈吉煤快vivo50🍀): 文件锁系统初始化失败，将使用传统文件操作'))
    }
} catch (error) {
    logger.error(chalk.red('(🍀凑哈吉煤快vivo50🍀): 文件锁系统初始化异常:'), error)
    logger.warn(chalk.yellow('(🍀凑哈吉煤快vivo50🍀): 将使用传统文件操作模式'))
}

logger.warn(chalk.blue('(🍀凑哈吉煤快vivo50🍀):若出现README.md中未提及的问题,请联系我们!!!'))
logger.info(chalk.green('(🍀凑哈吉煤快vivo50🍀):"初始化完成,祝您游玩愉快!🌴'))
logger.info('🌴🌴🌴🌴🌴🌴🌴🌴')
} else {
    console.log(`正在载入"🌱虚空插件trss版"~`)
    
    // 在控制台模式下也初始化文件锁系统
    try {
        const fileLockInitialized = await initializeFileLockSystem()
        if (fileLockInitialized) {
            console.log('文件锁系统初始化成功 🔒')
        } else {
            console.warn('文件锁系统初始化失败，将使用传统文件操作')
        }
    } catch (error) {
        console.error('文件锁系统初始化异常:', error)
        console.warn('将使用传统文件操作模式')
    }
}


if (!await redis.get(`akasha:notice:deltime`)) {
    await redis.set(`akasha:notice:deltime`, "600")
}


// files.forEach((file) => {//forEach() 方法用于调用数组的每个元素，并将元素传递给回调函数。
//     ret.push(import(`./apps/${file}`))
// })//把file放入

// ret = await Promise.allSettled(ret)

// let apps = {}
// //遍历apps目录文件
// for (let i in files) {
//     let name = files[i].replace('.js', '')
//     if (ret[i].status != 'fulfilled') {
//         logger.error(`虚空插件载入apps应用出现错误：${logger.red(name)}`)
//         logger.error(ret[i].reason)
//         continue//报错就跳过本次循环,防止报错的插件被写入
//     }
//     apps[name] = ret[i].value[Object.keys(ret[i].value)[0]]
// }
export { apps }

